import {notifications} from "@mantine/notifications";
import {RecordsRequestProps, RecordsResponseProps} from "./interface";

export async function fetchRecords(
  url: string,
  request: RecordsRequestProps,
): Promise<RecordsResponseProps> {
  try {
    console.log(request);
    // 发送POST请求
    const response = await fetch(url, {
      method: "POST",
      headers: {"Content-Type": "application/json"},
      body: JSON.stringify(request),
    });

    // 检查响应状态码
    if (!response.ok) {
      // 如果响应不是 2xx 状态，抛出异常
      throw new Error(`HTTP Error: ${response.status} ${response.statusText}`);
    }

    // 解析返回的数据
    const data: RecordsResponseProps = await response.json();
    return data;
  } catch (error) {
    // 错误处理，返回空的数据结构
    const dataNull: RecordsResponseProps = {
      totalRecords: 0,
      records: [],
    };
    // 显示失败的通知
    notifications.show({
      title: "获取数据失败",
      message: error instanceof Error ? error.message : "发生了未知错误",
      color: "red",
      radius: "sm",
    });
    // 可能是一个 Error 对象，也可能是其他类型。
    if (error instanceof Error) {
      // 错误是 Error 类型，记录错误信息
      console.error("获取数据失败，后端提示为：", error.message);
    } else {
      // 其他类型的错误
      console.error("获取数据失败，发生了未知错误");
    }
    return dataNull;
  }
}
